home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
081-090
/
amok81
/
m2
/
talkdemo
/
txt
/
requester.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
71 lines
IMPLEMENTATION MODULE Requester;
(*$ LargeVars:=FALSE NilChk:=FALSE StackChk:=FALSE
StackParms:=FALSE RangeChk:=FALSE EntryClear:=FALSE
Volatile:=FALSE
*)
FROM SYSTEM IMPORT ADR,ADDRESS,LONGSET,CAST;
IMPORT A:Arts, ID:IntuitionD, IL:IntuitionL, DD:DosD, R;
(*$ LongAlign:=TRUE *)
VAR
oldWin:ADDRESS;
(*$ CopyDyn:=FALSE *)
PROCEDURE Request(
text:ARRAY OF CHAR; (* durch "\n" getrennt *)
gadgets:ARRAY OF CHAR; (* durch "|" getrennt *)
args:ADDRESS) (* args für text und gadgets %d %lx %s etc *)
:INTEGER;
VAR
ez:ID.EasyStruct;
idcmp:ID.IDCMPFlagSet;
BEGIN
IF CAST(LONGINT,CAST(DD.ProcessPtr,A.thisTask)^.windowPtr)<0 THEN
RETURN 0
END;
idcmp:=ID.IDCMPFlagSet{}; (* nix! *)
ez.structSize:=SIZE(ID.EasyStruct);
ez.flags:=LONGSET{};
ez.title:=A.programName;
ez.textFormat:=ADR(text);
ez.gadgetFormat:=ADR(gadgets);
RETURN IL.EasyRequestArgs(CAST(DD.ProcessPtr,A.thisTask)^.windowPtr,ez,idcmp,args);
END Request;
(* bringt YES=1 NO=2 CANCEL=0 auf process^.windowPtr *)
(*$ CopyDyn:=FALSE *)
PROCEDURE YNCRequest(frage:ARRAY OF CHAR (* kann mehrere Zeilen enthalten! *)
):INTEGER;
BEGIN
RETURN Request(frage,"YES|NO|CANCEL",NIL);
END YNCRequest;
(* bringt nur ein Gadget: OK *)
(*$ CopyDyn:=FALSE *)
PROCEDURE OKRequest(msg:ARRAY OF CHAR); (* s.o *)
BEGIN
IF Request(msg,"OK",NIL)=0 THEN END;
END OKRequest;
PROCEDURE SetWindow(win{R.A0}:ID.WindowPtr);
VAR
me{R.A1}:DD.ProcessPtr;
BEGIN
me:=A.thisTask;
me^.windowPtr:=win;
END SetWindow;
PROCEDURE RestoreWindow;
BEGIN
SetWindow(oldWin);
END RestoreWindow;
BEGIN
oldWin:=CAST(DD.ProcessPtr,A.thisTask)^.windowPtr;
A.Assert(IL.intuitionVersion>=36,ADR("Needs Intuition>=36!"));
CLOSE
RestoreWindow;
END Requester.